"""
数据输出

take 算子
==============================================================================================
计算 RDD 有多少条数据，返回一个数字

- 语法：rdd.collect()

==============================================================================================
"""

# 演示RDD的flatMap成员方法的使用
from pyspark import SparkConf, SparkContext

# windows 中 spark 找不到对于的 python 解释器会报错
import os

os.environ["PYSPARK_PYTHON"] = "D:/python3.11/python.exe"

conf = SparkConf().setMaster("local[*]").setAppName("test_spark")
sc = SparkContext(conf=conf)

# collect原子：输出RDD为list对象
rdd_list = sc.parallelize({1, 2, 3, 4, 5})
print(rdd_list.collect())

# reduce原子，对RDD进行两两聚合
rdd_kist = rdd_list.reduce(lambda a, b: a + b)
print(rdd_kist)

# take原子，取出RDD前N个元素，组成list返回
take_list = rdd_list.take(3)
print(take_list)

# count原子，统计rdd内有多少条数据，返回值为数字
num_count = rdd_list.count()
print(f"rdd内共有{num_count}个元素")

sc.stop()
